Advertisement
Guest User

Untitled

a guest
Sep 27th, 2020
13
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.42 KB | None | 0 0
  1. # Generated by PNCconf at Sun Sep 20 22:34:44 2020
  2. # If you make changes to this file, they will be
  3. # overwritten when you run PNCconf again
  4.  
  5. loadrt trivkins
  6. loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
  7. loadrt hostmot2
  8. loadrt hm2_pci config=" num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=20xxxx"
  9. setp hm2_5i25.0.watchdog.timeout_ns 5000000
  10. loadrt pid names=pid.x,pid.y,pid.z,pid.s
  11. loadrt estop_latch
  12. loadrt or2 count=1
  13. addf estop-latch.0 servo-thread
  14. addf or2.0 servo-thread
  15.  
  16. addf hm2_5i25.0.read servo-thread
  17. addf motion-command-handler servo-thread
  18. addf motion-controller servo-thread
  19. addf pid.x.do-pid-calcs servo-thread
  20. addf pid.y.do-pid-calcs servo-thread
  21. addf pid.z.do-pid-calcs servo-thread
  22. addf pid.s.do-pid-calcs servo-thread
  23. addf hm2_5i25.0.write servo-thread
  24.  
  25.  
  26.  
  27. # Add the two external e-stop hard buttons into the control
  28. net estop-loopout iocontrol.0.emc-enable-in <= estop-latch.0.ok-out
  29. net estop-loopin iocontrol.0.user-enable-out => estop-latch.0.ok-in
  30. net estop-reset iocontrol.0.user-request-enable => estop-latch.0.reset
  31. net estop-button1 or2.0.in0 <= hm2_5i25.0.7i76.0.0.input-08-not
  32. net estop-button2 or2.0.in1 <= hm2_5i25.0.7i76.0.0.input-07-not
  33. net remote-estop estop-latch.0.fault-in <= or2.0.out
  34.  
  35. loadrt mux8 count=2
  36. addf mux8.0 servo-thread
  37.  
  38.  
  39. # external output signals
  40.  
  41.  
  42. # external input signals
  43.  
  44.  
  45. #*******************
  46. # AXIS X
  47. #*******************
  48.  
  49. setp pid.x.Pgain [AXIS_0]P
  50. setp pid.x.Igain [AXIS_0]I
  51. setp pid.x.Dgain [AXIS_0]D
  52. setp pid.x.bias [AXIS_0]BIAS
  53. setp pid.x.FF0 [AXIS_0]FF0
  54. setp pid.x.FF1 [AXIS_0]FF1
  55. setp pid.x.FF2 [AXIS_0]FF2
  56. setp pid.x.deadband [AXIS_0]DEADBAND
  57. setp pid.x.maxoutput [AXIS_0]MAX_OUTPUT
  58. setp pid.x.error-previous-target true
  59. setp pid.x.maxerror .0005
  60.  
  61. net x-index-enable <=> pid.x.index-enable
  62. net x-enable => pid.x.enable
  63. net x-pos-cmd => pid.x.command
  64. net x-vel-cmd => pid.x.command-deriv
  65. net x-pos-fb => pid.x.feedback
  66. net x-output => pid.x.output
  67.  
  68. # Step Gen signals/setup
  69.  
  70. setp hm2_5i25.0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
  71. setp hm2_5i25.0.stepgen.00.dirhold [AXIS_0]DIRHOLD
  72. setp hm2_5i25.0.stepgen.00.steplen [AXIS_0]STEPLEN
  73. setp hm2_5i25.0.stepgen.00.stepspace [AXIS_0]STEPSPACE
  74. setp hm2_5i25.0.stepgen.00.position-scale [AXIS_0]STEP_SCALE
  75. setp hm2_5i25.0.stepgen.00.step_type 0
  76. setp hm2_5i25.0.stepgen.00.control-type 1
  77. setp hm2_5i25.0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAXACCEL
  78. setp hm2_5i25.0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAXVEL
  79.  
  80. # ---closedloop stepper signals---
  81.  
  82. net x-pos-cmd <= axis.0.motor-pos-cmd
  83. net x-vel-cmd <= axis.0.joint-vel-cmd
  84. net x-output => hm2_5i25.0.stepgen.00.velocity-cmd
  85. net x-pos-fb <= hm2_5i25.0.stepgen.00.position-fb
  86. net x-pos-fb => axis.0.motor-pos-fb
  87. net x-enable <= axis.0.amp-enable-out
  88. net x-enable => hm2_5i25.0.stepgen.00.enable
  89.  
  90. # ---setup home / limit switch signals---
  91. net both-x <= hm2_5i25.0.7i76.0.0.input-23-not
  92. net both-x => axis.0.neg-lim-sw-in
  93. net both-x => axis.0.pos-lim-sw-in
  94.  
  95.  
  96. #*******************
  97. # AXIS Y
  98. #*******************
  99.  
  100. setp pid.y.Pgain [AXIS_1]P
  101. setp pid.y.Igain [AXIS_1]I
  102. setp pid.y.Dgain [AXIS_1]D
  103. setp pid.y.bias [AXIS_1]BIAS
  104. setp pid.y.FF0 [AXIS_1]FF0
  105. setp pid.y.FF1 [AXIS_1]FF1
  106. setp pid.y.FF2 [AXIS_1]FF2
  107. setp pid.y.deadband [AXIS_1]DEADBAND
  108. setp pid.y.maxoutput [AXIS_1]MAX_OUTPUT
  109. setp pid.y.error-previous-target true
  110. setp pid.y.maxerror .0005
  111.  
  112. net y-index-enable <=> pid.y.index-enable
  113. net y-enable => pid.y.enable
  114. net y-pos-cmd => pid.y.command
  115. net y-vel-cmd => pid.y.command-deriv
  116. net y-pos-fb => pid.y.feedback
  117. net y-output => pid.y.output
  118.  
  119. # Step Gen signals/setup
  120.  
  121. setp hm2_5i25.0.stepgen.01.dirsetup [AXIS_1]DIRSETUP
  122. setp hm2_5i25.0.stepgen.01.dirhold [AXIS_1]DIRHOLD
  123. setp hm2_5i25.0.stepgen.01.steplen [AXIS_1]STEPLEN
  124. setp hm2_5i25.0.stepgen.01.stepspace [AXIS_1]STEPSPACE
  125. setp hm2_5i25.0.stepgen.01.position-scale [AXIS_1]STEP_SCALE
  126. setp hm2_5i25.0.stepgen.01.step_type 0
  127. setp hm2_5i25.0.stepgen.01.control-type 1
  128. setp hm2_5i25.0.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAXACCEL
  129. setp hm2_5i25.0.stepgen.01.maxvel [AXIS_1]STEPGEN_MAXVEL
  130.  
  131. # ---closedloop stepper signals---
  132.  
  133. net y-pos-cmd <= axis.1.motor-pos-cmd
  134. net y-vel-cmd <= axis.1.joint-vel-cmd
  135. net y-output => hm2_5i25.0.stepgen.01.velocity-cmd
  136. net y-pos-fb <= hm2_5i25.0.stepgen.01.position-fb
  137. net y-pos-fb => axis.1.motor-pos-fb
  138. net y-enable <= axis.1.amp-enable-out
  139. net y-enable => hm2_5i25.0.stepgen.01.enable
  140.  
  141. # ---setup home / limit switch signals--
  142. net both-y <= hm2_5i25.0.7i76.0.0.input-25-not
  143. net both-y => axis.1.neg-lim-sw-in
  144. net both-y => axis.1.pos-lim-sw-in
  145.  
  146. net y-home-sw <= hm2_5i25.0.7i76.0.0.input-26-not
  147. net y-home-sw => axis.1.home-sw-in
  148.  
  149.  
  150. #*******************
  151. # AXIS Z
  152. #*******************
  153.  
  154. setp pid.z.Pgain [AXIS_2]P
  155. setp pid.z.Igain [AXIS_2]I
  156. setp pid.z.Dgain [AXIS_2]D
  157. setp pid.z.bias [AXIS_2]BIAS
  158. setp pid.z.FF0 [AXIS_2]FF0
  159. setp pid.z.FF1 [AXIS_2]FF1
  160. setp pid.z.FF2 [AXIS_2]FF2
  161. setp pid.z.deadband [AXIS_2]DEADBAND
  162. setp pid.z.maxoutput [AXIS_2]MAX_OUTPUT
  163. setp pid.z.error-previous-target true
  164. setp pid.z.maxerror .0005
  165.  
  166. net z-index-enable <=> pid.z.index-enable
  167. net z-enable => pid.z.enable
  168. net z-pos-cmd => pid.z.command
  169. net z-vel-cmd => pid.z.command-deriv
  170. net z-pos-fb => pid.z.feedback
  171. net z-output => pid.z.output
  172.  
  173. # Step Gen signals/setup
  174.  
  175. setp hm2_5i25.0.stepgen.02.dirsetup [AXIS_2]DIRSETUP
  176. setp hm2_5i25.0.stepgen.02.dirhold [AXIS_2]DIRHOLD
  177. setp hm2_5i25.0.stepgen.02.steplen [AXIS_2]STEPLEN
  178. setp hm2_5i25.0.stepgen.02.stepspace [AXIS_2]STEPSPACE
  179. setp hm2_5i25.0.stepgen.02.position-scale [AXIS_2]STEP_SCALE
  180. setp hm2_5i25.0.stepgen.02.step_type 0
  181. setp hm2_5i25.0.stepgen.02.control-type 1
  182. setp hm2_5i25.0.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAXACCEL
  183. setp hm2_5i25.0.stepgen.02.maxvel [AXIS_2]STEPGEN_MAXVEL
  184.  
  185. # ---closedloop stepper signals---
  186.  
  187. net z-pos-cmd <= axis.2.motor-pos-cmd
  188. net z-vel-cmd <= axis.2.joint-vel-cmd
  189. net z-output => hm2_5i25.0.stepgen.02.velocity-cmd
  190. net z-pos-fb <= hm2_5i25.0.stepgen.02.position-fb
  191. net z-pos-fb => axis.2.motor-pos-fb
  192. net z-enable <= axis.2.amp-enable-out
  193. net z-enable => hm2_5i25.0.stepgen.02.enable
  194.  
  195. # ---setup home / limit switch signals---
  196.  
  197. # --- MIN-Z ---
  198. net min-z <= hm2_5i25.0.7i76.0.0.input-21-not
  199.  
  200. # --- MAX-Z ---
  201. net max-z <= hm2_5i25.0.7i76.0.0.input-22-not
  202.  
  203. # --- HOME-Z ---
  204. net home-z <= hm2_5i25.0.7i76.0.0.input-20-not
  205.  
  206.  
  207. net home-z => axis.2.home-sw-in
  208. net min-z => axis.2.neg-lim-sw-in
  209. net max-z => axis.2.pos-lim-sw-in
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217. #*******************
  218. # SPINDLE S
  219. #*******************
  220.  
  221. setp pid.s.Pgain [SPINDLE_9]P
  222. setp pid.s.Igain [SPINDLE_9]I
  223. setp pid.s.Dgain [SPINDLE_9]D
  224. setp pid.s.bias [SPINDLE_9]BIAS
  225. setp pid.s.FF0 [SPINDLE_9]FF0
  226. setp pid.s.FF1 [SPINDLE_9]FF1
  227. setp pid.s.FF2 [SPINDLE_9]FF2
  228. setp pid.s.deadband [SPINDLE_9]DEADBAND
  229. net ratio_select.out pid.s.maxoutput
  230. setp pid.s.error-previous-target true
  231.  
  232. net spindle-index-enable <=> pid.s.index-enable
  233. net spindle-enable => pid.s.enable
  234. net spindle-vel-cmd-rpm => pid.s.command
  235. net spindle-vel-fb-rpm => pid.s.feedback
  236. net spindle-output <= pid.s.output
  237.  
  238. # ---digital potentionmeter output signals/setup---
  239.  
  240. setp hm2_5i25.0.7i76.0.0.spinout-minlim [SPINDLE_9]OUTPUT_MIN_LIMIT
  241. setp hm2_5i25.0.7i76.0.0.spinout-maxlim [SPINDLE_9]OUTPUT_MAX_LIMIT
  242. setp hm2_5i25.0.7i76.0.0.spinout-scalemax [SPINDLE_9]OUTPUT_SCALE
  243.  
  244. net spindle-output => hm2_5i25.0.7i76.0.0.spinout
  245. net spindle-enable => hm2_5i25.0.7i76.0.0.spinena
  246. net spindle-ccw => hm2_5i25.0.7i76.0.0.spindir
  247.  
  248. # ---setup spindle control signals---
  249.  
  250. net spindle-vel-cmd-rps <= motion.spindle-speed-out-rps
  251. net spindle-vel-cmd-rps-abs <= motion.spindle-speed-out-rps-abs
  252. net spindle-vel-cmd-rpm <= motion.spindle-speed-out
  253. net spindle-vel-cmd-rpm-abs <= motion.spindle-speed-out-abs
  254. net spindle-enable <= motion.spindle-on
  255. net spindle-cw <= motion.spindle-forward
  256. net spindle-ccw <= motion.spindle-reverse
  257. net spindle-brake <= motion.spindle-brake
  258. net spindle-revs => motion.spindle-revs
  259. net spindle-at-speed => motion.spindle-at-speed
  260. net spindle-vel-fb-rps => motion.spindle-speed-in
  261. net spindle-index-enable <=> motion.spindle-index-enable
  262.  
  263. # ---Setup spindle at speed signals---
  264.  
  265. sets spindle-at-speed true
  266.  
  267.  
  268. #******************************
  269. # connect miscellaneous signals
  270. #******************************
  271.  
  272. # ---HALUI signals---
  273.  
  274. net joint-select-a halui.joint.0.select
  275. net x-is-homed halui.joint.0.is-homed
  276. net jog-x-pos halui.jog.0.plus
  277. net jog-x-neg halui.jog.0.minus
  278. net jog-x-analog halui.jog.0.analog
  279. net joint-select-b halui.joint.1.select
  280. net y-is-homed halui.joint.1.is-homed
  281. net jog-y-pos halui.jog.1.plus
  282. net jog-y-neg halui.jog.1.minus
  283. net jog-y-analog halui.jog.1.analog
  284. net joint-select-c halui.joint.2.select
  285. net z-is-homed halui.joint.2.is-homed
  286. net jog-z-pos halui.jog.2.plus
  287. net jog-z-neg halui.jog.2.minus
  288. net jog-z-analog halui.jog.2.analog
  289. net jog-selected-pos halui.jog.selected.plus
  290. net jog-selected-neg halui.jog.selected.minus
  291. net spindle-manual-cw halui.spindle.forward
  292. net spindle-manual-ccw halui.spindle.reverse
  293. net spindle-manual-stop halui.spindle.stop
  294. net machine-is-on halui.machine.is-on
  295. net jog-speed halui.jog-speed
  296. net MDI-mode halui.mode.is-mdi
  297.  
  298. # ---coolant signals---
  299.  
  300. net coolant-mist <= iocontrol.0.coolant-mist
  301. net coolant-flood <= iocontrol.0.coolant-flood
  302.  
  303. # ---probe signal---
  304.  
  305. net probe-in => motion.probe-input
  306.  
  307. # ---jogwheel signals to mesa encoder - shared MPG---
  308.  
  309. net joint-selected-count <= hm2_5i25.0.encoder.00.count
  310.  
  311. # ---motion control signals---
  312.  
  313. net in-position <= motion.in-position
  314. net machine-is-enabled <= motion.motion-enabled
  315.  
  316. # ---digital in / out signals---
  317.  
  318.  
  319. # ---manual tool change signals---
  320.  
  321. loadusr -W hal_manualtoolchange
  322. net tool-change-request iocontrol.0.tool-change => hal_manualtoolchange.change
  323. net tool-change-confirmed iocontrol.0.tool-changed <= hal_manualtoolchange.changed
  324. net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
  325. net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
  326.  
  327.  
  328.  
  329. # gearbox hi/low <= net both-z <= hm2_5i25.0.7i76.0.0.input-06
  330.  
  331.  
  332. ####################################################################################
  333. # mpg setup below this line #
  334. ####################################################################################
  335.  
  336. setp axis.0.jog-vel-mode 0
  337. setp axis.1.jog-vel-mode 0
  338. setp axis.2.jog-vel-mode 0
  339. #hm2_5i25.0.7i76.0.0.enc0.count
  340.  
  341. setp axis.0.jog-vel-mode 0 # X AXIS
  342. setp axis.1.jog-vel-mode 0 # Y AXIS
  343. setp axis.2.jog-vel-mode 0 # Z AXIS
  344. #setp axis.3.jog-vel-mode 0 # A AXIS
  345. #setp axis.4.jog-vel-mode 0 # B AXIS
  346.  
  347. setp mux8.0.in0 0.0001
  348. setp mux8.0.in1 0.001
  349. setp mux8.0.in2 0.01
  350. setp mux8.0.in3 0.1
  351. setp mux8.0.in4 0.5
  352.  
  353.  
  354. # The inputs to the mux8 component, default is not required so Input 24 isn?t referenced
  355. net scale1 mux8.0.sel0 <= hm2_5i25.0.7i76.0.0.input-10
  356. net scale2 mux8.0.sel1 <= hm2_5i25.0.7i76.0.0.input-09
  357. net scale3 mux8.0.sel2 <= hm2_5i25.0.7i76.0.0.input-14
  358. #net scale4 mux8.0.sel3 <= hm2_5i25.0.7i76.0.0.input-13
  359. #net scale5 mux8.0.sel4 <= hm2_5i25.0.7i76.0.0.input-11
  360.  
  361.  
  362. net mpg-scale <= mux8.0.out
  363. net mpg-scale => axis.0.jog-scale
  364. net mpg-scale => axis.1.jog-scale
  365. net mpg-scale => axis.2.jog-scale
  366. #net mpg-scale => axis.3.jog-scale
  367. #net mpg-scale => axis.4.jog-scale
  368.  
  369.  
  370. net axis-select-x <= hm2_5i25.0.7i76.0.0.input-27
  371. net axis-select-y <= hm2_5i25.0.7i76.0.0.input-05
  372. net axis-select-z <= hm2_5i25.0.7i76.0.0.input-04
  373. #net axis-select-a <= hm2_5i25.0.7i76.0.0.input-15
  374. #net axis-select-b <= hm2_5i25.0.7i76.0.0.input-12
  375.  
  376.  
  377. # MAPPING MPG ENCODER signals to jog counters
  378. # using one encoder for all axis
  379. net jog-counter <= hm2_5i25.0.7i76.0.0.enc0.count
  380.  
  381.  
  382. # MAPPING INPUT signals to linux cnc signals / gui
  383. # Since there is only one encoder it is connected to all axis. Only the one that is selected # actually moves
  384. net jog-counter => axis.0.jog-counts
  385. net jog-counter => axis.1.jog-counts
  386. net jog-counter => axis.2.jog-counts
  387. #net jog-counter => axis.3.jog-counts
  388. #net jog-counter => axis.4.jog-counts
  389.  
  390.  
  391. # Send input signal to linux cnc action (enable axis selection)
  392. net axis-select-x => axis.0.jog-enable
  393. net axis-select-y => axis.1.jog-enable
  394. net axis-select-z => axis.2.jog-enable
  395. #net axis-select-a => axis.3.jog-enable
  396. #net axis-select-b => axis.4.jog-enable
  397.  
  398.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement